iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0

前言:

  • Istio 金絲雀

Istio 金絲雀

  • Canary是一種發布策略,藍綠部署是準備兩套系統,在兩套系統之間進行切換,金絲雀策略是只有一套系統,逐漸替換這套系統。
  • 簡而言之Istio Canary就是一種分流機制他也是做用在VirtualService DestinationRule底下的一種功能透過Service Deployment的labels標籤app version來對應控制該服務所需要流向的端點,以上幾種的組合就可以實踐出服務權重流向的功能。

舉例來說 以下實作服務金不同權重V1(75% )V2( 25%)流向不同版本的服務範例:

Service

apiVersion: apps/v1beta1
kind: Service
metadata:
  name: s-test
  labels:
    app: test
spec:
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: test

Deployment

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: test-v1
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "true"
      labels:
        app: test
        version: v1
    spec:
      containers:
      - name: test-v1
        image: test
        livenessProbe:
          httpGet:
            path: /
            port: 80
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /
            port: 80
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        ports:
          - name: http
            containerPort: 80
            protocol: TCP
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: test-v2
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test
        version: v2
      annotations:
        sidecar.istio.io/inject: "true"
    spec:
      containers:
      - name: test-v2
        image: test
        livenessProbe:
          httpGet:
            path: /
            port: 80
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /
            port: 80
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        ports:
          - name: http
            containerPort: 80
            protocol: TCP

VirtualService

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
    name: vs-test   #virtual service名稱
spec:
    hosts:
         www.test.com 
    gateways: 
	test-gateway
    http:
     - route:
        - destination:
               host: test.default.svc.cluster.local
                subset: v1
                weight: 75
        - destination:
                host: test.default.svc.cluster.local
                subset: v2
                weight: 25

DestinationRule

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: test
spec:
  host: test.default.svc.cluster.local
  subsets:
  - name: v1
        labels:
         version: v1
  - name: v2
        labels:
         version: v2

結語:

  • Istio 支持可擴展的金絲雀部署,Istio 網路提供了管理流量分配所需的控制,並完全獨立於部署縮放,這允許簡單而強大的方式來進行金絲雀測試和營運。

上一篇
Istio DestinationRule
下一篇
Istio 內部憑證
系列文
淺談 Istio30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言